//
// Created by denglibin on 19-10-23.
//

/**
 *Posix线程中的线程属性pthread_attr_t主要包括scope属性、
 * detach属性、堆栈地址、堆栈大小、优先级。在pthread_create中，把第二个参数设置为NULL的话，将采用默认的属性配置
 * 线程属性结构如下：
 * typedef struct
            {
                   int                       detachstate;     线程的分离状态
                   int                       schedpolicy;     线程调度策略
                   struct sched_param        schedparam;      线程的调度参数
                   int                       inheritsched;    线程的继承性
                   int                       scope;           线程的作用域
                   size_t                    guardsize;       线程栈末尾的警戒缓冲区大小
                   int                       stackaddr_set;
                   void *                    stackaddr;       线程栈的位置
                   size_t                    stacksize;       线程栈的大小
            }pthread_attr_t;

__detachstate，表示新线程是否与进程中其他线程脱离同步， 如果设置为PTHREAD_CREATE_DETACHED 则新线程不能用pthread_join()来同步，
 且在退出时自行释放所占用的资源。缺省为PTHREAD_CREATE_JOINABLE状态。
 这个属性也可以在线程创建并运行以后用pthread_detach()来设置，而一旦设置为PTHREAD_CREATE_DETACH状态（
 不论是创建时设置还是运行时设置）则不能再恢复到PTHREAD_CREATE_JOINABLE状态。
 置的时候可以有两种选择：
<1>.detachstate参数为：PTHREAD_CREATE_DETACHED 分离状态启动
<2>.detachstate参数为：PTHREAD_CREATE_JOINABLE 正常启动线程

 __schedpolicy，表示新线程的调度策略，主要包括：
SCHED_OTHER（正常、非实时）
SCHED_RR（实时、轮转法）
SCHED_FIFO（实时、先入先出）
缺省为SCHED_OTHER，后两种调度策略仅对超级用户有效。
运行时可以用过pthread_setschedparam()来改变。

函数pthread_attr_setschedpolicy和pthread_attr_getschedpolicy分别用来设置和得到线程的调度策略。
 int pthread_attr_getschedpolicy(const pthread_attr_t *, int * policy)
int pthread_attr_setschedpolicy(pthread_attr_*, int policy)


 __schedparam，一个struct sched_param结构，目前仅有一个sched_priority整型变量表示线程的运行优先级。这个参数仅当调度策略为实时（即SCHED_RR或SCHED_FIFO）时才有效，并可以在运行时通过pthread_setschedparam()函数来改变，缺省为0。
函数pthread_attr_getschedparam 和pthread_attr_setschedparam分别用来设置和得到线程的调度参数。

 int pthread_attr_getschedparam(const pthread_attr_t *,struct sched_param *);
int pthread_attr_setschedparam(pthread_attr_t *,const struct sched_param *);



 */

